#!/bin/bash
# Author: Eobard Thawne(gxp)
# Date:   2025/09/29 18:35:30
set -e


# ========= 默认参数 =========
#     mnn git路径、安装的位置
DEFAULT_REPO_URL="https://github.com/alibaba/MNN"
DEFAULT_INSTALL_DIR="$HOME/mnn_workspace"

show_help() {
    echo
    echo "用法: $0 [mnn的安装位置（可选参数）] [mnn的git地址（可选参数）]"
    echo "参数:"
    echo "          参数1   指定安装目录 (默认: $DEFAULT_INSTALL_DIR)"
    echo "          参数2   指定仓库地址 (默认: $DEFAULT_REPO_URL)"
    echo
    echo "示例:"
    echo "          $0                                              使用默认安装目录和仓库地址"
    echo "          $0 /opt/mnn                                     指定安装目录，使用默认仓库地址"
    echo "          $0 /opt/mnn https://github.com/alibaba/MNN      指定安装目录和仓库地址"
    echo
    exit 0
}
# ========= 处理 --help或者-h =========
if [[ "$1" == "--help" || "$1" == "-h" ||"$1" == "-help" ]]; then
    show_help
fi


# ========= 处理传入参数 =========
if [ -z "$1" ]; then
    echo "⚠️ 未传入安装位置，使用默认值: $DEFAULT_INSTALL_DIR"
    INSTALL_DIR="$DEFAULT_INSTALL_DIR"
else
    INSTALL_DIR="$1"
    echo "📂 使用安装位置: $INSTALL_DIR"
fi

if [ -z "$2" ]; then
    echo "⚠️ 未传入MNN git地址，使用默认值: $DEFAULT_REPO_URL"
    REPO_URL="$DEFAULT_REPO_URL"
else
    REPO_URL="$2"
    echo "🌐 使用MNN git地址: $REPO_URL"
fi


# ========= 检查 cmake =========
if ! command -v cmake &> /dev/null
then
    echo "❌ cmake 未安装，正在使用 brew 安装..."
    if ! command -v brew &> /dev/null
    then
        echo "❌ 未找到 Homebrew，请先安装 Homebrew: https://brew.sh/"
        exit 1
    fi
    brew install cmake
else
    echo
fi

# ========= 克隆MNN仓库：如果克隆不下来，请手动下载，然后把文件的所有内容放到MNN文件夹里即可 =========
mkdir -p "$INSTALL_DIR"
cd "$INSTALL_DIR"
if [ ! -d "$INSTALL_DIR/MNN" ]; then
    echo "⬇️⬇️⬇️⬇️⬇️⬇️⬇️"
    git clone "$REPO_URL"
else
    echo
fi
cd MNN



# ========= 运行 schema =========
echo "⚙️ 执行 schema/generate.sh..."
chmod +x ./schema/generate.sh
./schema/generate.sh


# ========= 编译 =========
echo "📦 开始编译..."
mkdir -p build
cd build
cmake -DMNN_BUILD_DEMO=ON -DMNN_BUILD_CONVERTER=true ..
make -j16

# ========= 查看MNNConvert版本 =========
if [ -f "./MNNConvert" ]; then
    echo "✅ MNNConvert 编译成功!"
    ./MNNConvert --version
else
    echo "❌ 编译失败，未找到 MNNConvert"
    exit 1
fi